package com.wzcl.app.service;

import com.wzcl.app.dao.model.Orders;
import com.wzcl.app.dao.model.RefundRequest;
import com.wzcl.app.model.common.RVO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface WeChatPayService {
    /**
     * 微信统一下单方法（适用于扫码支付、APP支付、公众号支付）
     * @param orders 订单信息（至少包含订单金额与订单号）
     * @return 返回待支付二维码字符串
     */
    RVO createNativePay(Orders orders) throws Exception;

    /**
     * H5支付下单
     * @param orders 订单信息（至少包含订单金额与订单号）
     * @return 返回分享页url
     */
    RVO createWebPay(Orders orders) throws Exception;


    /**
     * 微信统一下单方法（适用于扫码支付、APP支付、公众号支付）异步回调
     * @param request 请求
     * @param response 响应
     * @return 返回xml格式通知
     * @throws Exception
     */
    void nativeCallback(HttpServletRequest request, HttpServletResponse response) throws Exception;

    /**
     * 申请退款
     * @param refundRequest 退款申请对象（包含orderId和退款申请信息）
     * @return 返回包含退款结果的RVO
     */
    RVO applyRefund(RefundRequest refundRequest) throws InterruptedException;

    /**
     * 退款审批
     * @param refundRequest 退款申请对象（包含审批状态）
     * @return 返回包含审核结果的RVO
     */
    RVO createRefund(RefundRequest refundRequest);
}
